const { defineConfig } = require('@vue/cli-service')
const Mock = require('mockjs')
const bodyParser = require('body-parser') //用于post请求的一种中间件
    // Es6语法  （数据）
    // 引入加密
    // const md5 = require('blueimp-md5')
const { list } = Mock.mock({
        'list|40': [{
            'id|+1': 1, //id从1开始递增
            'image': '@image(200X200,@color)',
            'title': '@ctitle(3,50)', //生成3到50个汉字的标题加c代表出中文
            'price|1-100.1-2': 1 //1到100之间的浮点数，小数点1到2位
        }]
    })
    // 模拟分类列表数据
const { products } = Mock.mock({
        'products|50': [{
            'id|+1': 1,
            // 分类的单词
            'classify': '@pick(["手机数码","礼品鲜花","服装"])',
            'title': '@ctitle(3,50)', //生成数据
            'image': '@image(100X100,@color)',
        }]
    })
    // 存储注册用户信息，账号，基本数
const users = [
        // 写成默认
        { username: '18311004217', password: '123456' }
    ]
    // 验证码存储 字符串变量得用let 数值类型的空是null
let code = null

module.exports = defineConfig({
        transpileDependencies: true,
        // webpack提供开发者的服务器（接口）
        devServer: {
            setupMiddlewares: (mid, dev) => {
                // 转有关登录                                                              
                dev.app.use(bodyParser.json())
                    // 注册接口
                dev.app.post('/api/register', (req, res) => {
                        const { username, password, } = req.body //
                            //判断账号是否注册过   //判断前端的账号是否存在
                            //every()判断数组中的所有元素是否满足条件，有一个不满足就不行
                        const isAdd = users.every(item => item.username != username)
                        if (isAdd) {
                            users.push({
                                // username: username,
                                // password: password
                                // 可简写，属性与属性值相同是时
                                username,
                                password
                            })
                            res.send({
                                code: 200,
                                message: '注册成功'
                            })
                        } else {
                            res.send({
                                code: 0,
                                message: '该账号已注册过'
                            })
                        }

                    })
                    // 登录接口
                dev.app.post('/api/login', (req, res) => {
                    const { username, password, sms } = req.body //接收参数
                        //判断
                        //  const user = users.find(item => item.username == username && item.password == password)
                        // md5()加密
                    const user = users.find(item => item.username == username && item.password == password)
                    if (user) {
                        // 证明账号匹配
                        res.send({
                                code: 200,
                                message: '登录成功',
                                token: Mock.Random.guid(),
                            })
                            // 有关if-else 是新加了验证的校验
                            // if (sms == code) {
                            //     res.send({
                            //         code: 200,
                            //         message: '登录成功',
                            //         token: Mock.Random.guid(),
                            //     })
                            // } else {
                            //     res.send({
                            //         code: 0,
                            //         message: '验证错误',

                        //     })
                        // }

                    } else {
                        res.send({
                            code: 0,
                            message: '账号或密码错误'
                        })
                    }
                })

                // dev.app.get('/api/list', (req, res) => {
                //     res.send({
                //         code: 200,
                //         data: list
                //     })
                // })
                dev.app.get('/api/list', (req, res) => {
                        const { pagination, pageNUm } = req.query //获取前传过来的参数：页码，条数
                        res.send({
                            code: 200,
                            // 与上不同 传多少要写多少 如想要第一页的10个注索引从0开始
                            // slice不包含最后位的如1-10取到9因为从0开始
                            data: list.slice((pagination - 1) * pageNUm, pagination * pageNUm),
                            total: list.length

                        })
                    })
                    // 详情接口
                dev.app.get('/api/detail', (req, res) => {
                        const { id } = req.query
                        res.send({
                            code: 200,
                            // find(): 查找数组中符合条件的第一个元素
                            data: list.find(item => item.id == id)
                        })
                    })
                    // 分类
                dev.app.get('/api/kind', (req, res) => {
                        const { key } = req.query
                        res.send({
                            code: 200,
                            data: products.filter(item => item.classify == key)
                        })
                    })
                    // 搜索
                dev.app.get('/api/search', (req, res) => {
                        const { value } = req.query
                        res.send({
                            code: 0,
                            data: list.filter(item => item.title.includes(value))
                        })
                    })
                    // 验证码
                dev.app.get('/api/code', (req, res) => {
                    code = Mock.Random.integer(100000, 999999)
                    res.send({
                        code: 200,
                        data: code
                    })
                })
                return mid

            }
        }
    })
    //分页接口上拉下拉
    // module.exports = defineConfig({
    //     transpileDependencies: true,
    //     // webpack提供开发者的服务器（接口）
    //     devServer: {
    //         setupMiddlewares: (mid, dev) => {

//             dev.app.get('/api/list', (req, res) => {
//                 // 结构赋值
//                 const { id } = req.query
//                 res.send({
//                     code: 200,
//                     // find 找的意思，满足返回一个唯一的，不满足终止，
//                     // 两个等号，三个等号有类型的判断
//                     data: list.find(item => item.id == id)
//                 })
//             })
//             return mid

//         }
//     }
// })